package com.canyou.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.canyou.datascope.DataScope;
import com.canyou.system.entity.dept.DeptListVO;
import com.canyou.system.entity.dept.DeptVO;
import com.canyou.system.model.Dept;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 部门 Mapper 接口
 * </p>
 *
 * @author canyou
 * @since 2019-05-14
 */
public interface DeptMapper extends BaseMapper<Dept> {

    /**
     * 不分页, 获取部门列表
     *
     * @param dataScope 数据权限信息
     * @param deptName  部门名称
     * @param orgName   机构名称
     * @return
     */
    List<DeptVO> getNoPageList(DataScope dataScope,
                               @Param("deptName") String deptName,
                               @Param("orgName") String orgName);

    /**
     * 根据id获取部门详情
     *
     * @param id 部门id
     * @return
     */
    DeptVO getDeptDetailById(@Param("id") Long id);

    /**
     * 根据id删除部门, 物理删除
     *
     * @param deptId 部门id
     * @return
     */
    int deleteById(@Param("deptId") Long deptId);

    /**
     * 获取子部门的数量
     *
     * @param deptId 部门id
     * @return
     */
    int getDeptChildCount(Long deptId);

    /**
     * 获取所有部门列表, 返回 DeptListVO 模型对象, 不对数据权限进行过滤
     *
     * @return
     * @see DeptListVO
     */
    List<DeptListVO> getAllDeptListVO();

}
